In [ ]:
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd 
import skimage.measure

import random
import copy
import math
import cv2
import os
import sys

import argparse
import datetime
import json
import time
from pathlib import Path

import torch

import models_mae
import util.misc as misc
from engine_pretrain import train_one_epoch
from main_ViT import main, get_args_parser, run_one_image, DATASET_PATH, SemanticMapDataset
import timm.optim.optim_factory as optim_factory
from util.misc import NativeScalerWithGradNormCount as NativeScaler

from scipy.stats import wasserstein_distance
/tmp/ipykernel_2029703/3885390031.py:3: DeprecationWarning: 
Pyarrow will become a required dependency of pandas in the next major release of pandas (pandas 3.0),
(to allow more performant data types, such as the Arrow string type, and better interoperability with other libraries)
but was not found to be installed on your system.
If this would cause problems for you,
please provide us feedback at https://github.com/pandas-dev/pandas/issues/54466
        
  import pandas as pd
2024-02-27 10:09:07.779749: I tensorflow/core/util/port.cc:113] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them off, set the environment variable `TF_ENABLE_ONEDNN_OPTS=0`.
2024-02-27 10:09:07.811959: E external/local_xla/xla/stream_executor/cuda/cuda_dnn.cc:9261] Unable to register cuDNN factory: Attempting to register factory for plugin cuDNN when one has already been registered
2024-02-27 10:09:07.811986: E external/local_xla/xla/stream_executor/cuda/cuda_fft.cc:607] Unable to register cuFFT factory: Attempting to register factory for plugin cuFFT when one has already been registered
2024-02-27 10:09:07.812958: E external/local_xla/xla/stream_executor/cuda/cuda_blas.cc:1515] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered
2024-02-27 10:09:07.818334: I tensorflow/core/platform/cpu_feature_guard.cc:182] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations.
To enable the following instructions: AVX2 AVX512F AVX512_VNNI FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags.
2024-02-27 10:09:08.436717: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Could not find TensorRT
/usr/lib/python3/dist-packages/scipy/__init__.py:146: UserWarning: A NumPy version >=1.17.3 and <1.25.0 is required for this version of SciPy (detected version 1.26.3
  warnings.warn(f"A NumPy version >={np_minversion} and <{np_maxversion}"

TRAINED MODELS¶

Variables definition¶

In [ ]:
div = 64
step = int(32/4)
red = 1

mask_ratio = 0
test_name = '13labels_testMAE2'
n_crops = 500

box = 4
kernel = np.ones((box,box),np.float32)/(box**2)

map_list_t = ['master_big','master_big_closed','master_big_semiclosed']
map_root_name = 'master_big'

sem_dict = ['bicycle_road', 'building', 'entrance', 'grass', 'obstacle', 'parking', 'pedestrian_road', 'tree', 'vehicle_road', 'sitting_area', 'stairs', 'intersection_zone', 'shaded_area']
chans = len(sem_dict)

lut_in = [0, 10, 30, 50, 70, 110, 150, 255]
lut_out = [0, 120, 200, 225, 240, 248, 250, 255]
lut_in = [0, 10, 70, 150, 255]
lut_out = [0, 130, 210, 245, 255]
# plt.plot(lut_in, lut_out)
lut_8u = np.interp(np.arange(0, 256), lut_in, lut_out).astype(np.uint8)

Loading of the models¶

In [ ]:
# args = get_args_parser()
# args = args.parse_args()

# args.resume = '/home/placido.falqueto/IRI_Barcelona/mae/output_dir/test3-checkpoint-100.pth'

# device = torch.device(args.device)

# # define the model
# model = models_mae.__dict__[args.model](norm_pix_loss=args.norm_pix_loss)

# model.to(device)

# model_without_ddp = model

# eff_batch_size = args.batch_size * args.accum_iter * misc.get_world_size()

# if args.lr is None:  # only base_lr is specified
#     args.lr = args.blr * eff_batch_size / 256

# # following timm: set wd as 0 for bias and norm layers
# param_groups = optim_factory.add_weight_decay(model_without_ddp, args.weight_decay)
# optimizer = torch.optim.AdamW(param_groups, lr=args.lr, betas=(0.9, 0.95))
# loss_scaler = NativeScaler()

# misc.load_model(args=args, model_without_ddp=model_without_ddp, optimizer=optimizer, loss_scaler=loss_scaler)

Testing closed corridors (completely or partially closed)¶

In [ ]:
# red1 = 8

# for map_name in map_list_t:
#   print(map_name)

#   lines = 0
#   try:
#     with open('/home/placido.falqueto/IRI_Barcelona/maps/13semantics/'+map_root_name+'/'+map_name+'-reduced.csv') as f:
#       print('Reduced map found')
#       lines = f.readlines()
      
#   except FileNotFoundError:
#     with open('/home/placido.falqueto/IRI_Barcelona/maps/13semantics/'+map_root_name+'/'+map_name+'.csv') as f:
#       print('Using original map')
#       lines = f.readlines()

#   h = len(lines)
#   w = len(lines[0].split(','))

#   # Converts data to a list of integers
#   map = []
#   for line in lines:
#     map.extend([int(c) for c in line.split(',')])

#   for lab_class in sem_dict:
#     lines = 0
#     try:
#       with open('/home/placido.falqueto/IRI_Barcelona/maps/13semantics/'+map_name+'/'+map_name+'_sem_'+lab_class+'-reduced.csv') as f:
#         lines = f.readlines()

#       hh = len(lines)
#       ww = len(lines[0].split(','))

#       if hh != h or ww != w:
#         print(f'h: {h}\tw: {w}')
#         print(f'h: {hh}\tw: {ww}')
#         raise SystemExit("ERROR: Different sizes!!")

#       # Converts data to a list of integers
#       for line in lines:
#         map.extend([int(c) for c in line.split(',')])
    
#     except FileNotFoundError:
#       try:
#         with open('/home/placido.falqueto/IRI_Barcelona/maps/13semantics/'+map_root_name+'/'+map_name+'_sem_'+lab_class+'.csv') as f:
#           lines = f.readlines()

#         hh = len(lines)
#         ww = len(lines[0].split(','))

#         if hh != h or ww != w:
#           print(f'h: {h}\tw: {w}')
#           print(f'h: {hh}\tw: {ww}')
#           raise SystemExit("ERROR: Different sizes!!")

#         # Converts data to a list of integers
#         for line in lines:
#           map.extend([int(c) for c in line.split(',')])

#       except FileNotFoundError:
#         for i in range(h):
#           for j in range(w):
#             map.extend([255])

#   map = np.reshape(map,[chans,h,w])
#   map = np.moveaxis(map, 0, -1)
#   map = map/255

#   map_aux = map
#   map = np.zeros((int(math.ceil(h/red1)),int(math.ceil(w/red1)),chans))

#   for idx in range(chans):
#     map[:,:,idx] = skimage.measure.block_reduce(map_aux[:,:,idx], (red1,red1), np.max)

#   # print(map.shape)
#   h, w, _ = map.shape

#   lines = 0
#   with open('/home/placido.falqueto/IRI_Barcelona/maps/13semantics/'+map_root_name+'/humandensity-'+map_root_name+'-new.csv') as f:
#     lines = f.readlines()

#   hd = len(lines)
#   wd = len(lines[0].split(','))

#   # Converts data to a list of integers
#   data = []
#   for line in lines:
#     data.extend([int(c) for c in line.split(',')])

#   data = np.reshape(data,[hd,wd])
  
#   sigma = 10.0
#   # data = skimage.filters.gaussian(data, sigma=(sigma, sigma), channel_axis=-1)
#   data = skimage.measure.block_reduce(data, (red1,red1), np.max)
#   # data = np.subtract(data, np.full((h, w), np.min(data)))/(np.max(data)-np.min(data))
#   data = data*(map[:,:,0]>0)
  
#   lim_val = 0.15
#   sigma = 0.5
#   data_show = np.clip(data,0,np.max(data)*lim_val)/(np.max(data)*lim_val)
#   data_show = cv2.LUT((data_show*255).astype(np.uint8), lut_8u).astype(np.float32)/255
#   data_show = skimage.filters.gaussian(data_show, sigma=(sigma, sigma), channel_axis=-1)
#   data = data_show/np.sum(data_show)

#   # -----------------------------------------------------------------------------------
#   # Random sample 32x32 windows in map
#   n_crops = 100
#   inserted = 0
#   crops = np.zeros((n_crops,2),dtype=int)
#   selections = np.zeros((h,w))
#   for i in range(n_crops):
#     background = np.zeros((h,w))
#     flag = True
#     while flag:
#       aux_x = int(random.random()*(w-div+1))
#       aux_y = int(random.random()*(h-div+1))
#       flag = False
#       # print(f'INSERTED: {inserted}  ->  x: {aux_x} and y: {aux_y}')
#       # for z in range(inserted):
#       #   if abs(aux_x-crops[z,0])<int(div/10) and abs(aux_y-crops[z,1])<int(div/10):
#       #     # print('too close')
#       #     flag = True
#     crops[i,0] = aux_x
#     crops[i,1] = aux_y
#     selections = selections+cv2.rectangle(background,(crops[i,0],crops[i,1]),(crops[i,0]+div-1,crops[i,1]+div-1),(1,1,1),-1)
#     inserted = inserted + 1
#   selections = 1/selections

#   # -----------------------------------------------------------------------------------
#   # creating subplot and figure
#   ax = plt.subplot(111)
#   data_pred = np.zeros((int(math.ceil(h)),int(math.ceil(w))))
#   kls = []
#   for i in range(n_crops):
#     submap = map[crops[i,1]:crops[i,1]+div, crops[i,0]:crops[i,0]+div,:]
#     data_aux = data[crops[i,1]:crops[i,1]+div, crops[i,0]:crops[i,0]+div]
#     submap = torch.tensor(np.expand_dims(submap,axis=0), dtype=torch.float32).to(device)
#     _, subdata, _ = model(submap)
#     subdata = torch.einsum('nchw->nhwc', subdata).detach().cpu()
#     subdata = subdata.squeeze(dim=0).squeeze(dim=2).numpy()
#     data_pred[crops[i,1]:crops[i,1]+div, crops[i,0]:crops[i,0]+div] += subdata*selections[crops[i,1]:crops[i,1]+div, crops[i,0]:crops[i,0]+div]
    
#   data = torch.Tensor(data)
#   data_pred = torch.Tensor(data_pred)
#   data = data/data.max()
#   data_pred = data_pred/data_pred.max()
  
#   data_pred = data_pred/np.max(data_pred.detach().cpu().numpy())
#   plt.imshow(np.multiply(np.stack((map[:,:,0],map[:,:,0],map[:,:,0]),axis=2), np.stack((np.full(data_pred.shape,1),1-data_pred,1-data_pred),axis=2)), vmin=0, vmax=1)
#   # plt.imshow(np.multiply(np.stack((map[:,:,0],map[:,:,0],map[:,:,0]),axis=2), np.stack((np.full(data_pred.shape,1),1-data_pred,1-data_pred),axis=2)), vmin=0, vmax=1)
#   ax.get_xaxis().set_visible(False)
#   ax.get_yaxis().set_visible(False)
#   plt.show()
In [ ]:
def show_image(features, data, title=''):
    # features is [H, W, C]
    # plt.imshow(torch.clip((features * imagenet_std + imagenet_mean) * 255, 0, 255).int())
    data = data / data.max()
    test11 = np.stack((features[:,:,0],features[:,:,0],features[:,:,0]),axis=2)
    test11 = np.multiply(test11,np.stack((np.full(data.shape,1),1-data,1-data),axis=2))
    for i in range(10):
        alp = 0.5
        test11 = np.multiply(test11,np.stack((features[:,:,i+1],features[:,:,i+1],features[:,:,i+1]),axis=2)*alp+(1-alp))
    plt.imshow(test11)
    plt.title(title, fontsize=23)
    plt.axis('off')
    return

def run_one_image(x, target, model):
    # run MAE
    x = x.to('cuda')
    target = target.to('cuda')
    _, y, mask = model(x, mask_ratio=mask_ratio)
    x = x.detach().cpu()
    target = target.detach().cpu()
    
    y = y.squeeze(3).detach().cpu()

    is_mae = 0
    # if mask is not None:
    #     # visualize the mask
    #     mask = mask.detach()
    #     mask = mask.unsqueeze(-1).repeat(1, 1, model.patch_embed.patch_size[0]**2 *1)  # (N, H*W, p*p*3)
    #     mask = model.unpatchify(mask)  # 1 is removing, 0 is keeping
    #     mask = torch.einsum('nchw->nhwc', mask).detach().cpu()
    #     mask = mask.squeeze(-1)

    #     plt.figure()
    #     plt.imshow(mask[0])
    #     plt.show()

    #     # masked image
    #     im_masked = target * (1 - mask) + mask*target.max()

    #     is_mae = 1

    # # MAE reconstruction pasted with visible patches
    # im_paste = x * (1 - mask) + y * mask

    # make the plt figure larger
    plt.rcParams['figure.figsize'] = [24, 12] # W: 24, H: 12

    plt.subplot(1, 2+is_mae, 1)
    show_image(x[0], target[0], "original")

    if is_mae:
        plt.subplot(1, 2+is_mae, 2)
        show_image(x[0], im_masked[0], "masked")

    plt.subplot(1, 2+is_mae, 2+is_mae)
    show_image(x[0], y[0], "prediction")

    # plt.subplot(1, 4, 3)
    # plt.imshow(target[0])
    # plt.title('target', fontsize=23)
    # plt.axis('off')

    # plt.subplot(1, 4, 4)
    # plt.imshow(y[0])
    # plt.title('y', fontsize=23)
    # plt.axis('off')

    plt.show()

Model 1 testing¶

In [ ]:
kl1 = []
kli1 = []
was1 = []
mse1 = []

# get file list from /data/placido filtering only files that start with test_name
map_list = [f for f in os.listdir('/data/placido') if f.startswith(test_name)]
# remove the element in map_list that contains 'gates0'
map_list = [f for f in map_list if 'gates0' not in f]

print(map_list)

for map_count, map_path in enumerate(map_list):
  # map_path is test11-checkpoint-70-stanford_deathCircle0.pth, we need to isolate the map name (after stanford_ and before .pth)
  map_name = map_path.split('-')[3].split('.')[0]
  print(map_name)

  args = get_args_parser()
  args = args.parse_args()

  args.resume = '/data/placido/'+map_path

  device = torch.device(args.device)

  # define the model
  model = models_mae.__dict__[args.model](norm_pix_loss=args.norm_pix_loss)

  model.to(device)

  model_without_ddp = model

  eff_batch_size = args.batch_size * args.accum_iter * misc.get_world_size()

  if args.lr is None:  # only base_lr is specified
      args.lr = args.blr * eff_batch_size / 256

  # following timm: set wd as 0 for bias and norm layers
  param_groups = optim_factory.add_weight_decay(model_without_ddp, args.weight_decay)
  optimizer = torch.optim.AdamW(param_groups, lr=args.lr, betas=(0.9, 0.95))
  loss_scaler = NativeScaler()

  misc.load_model(args=args, model_without_ddp=model_without_ddp, optimizer=optimizer, loss_scaler=loss_scaler)


# -----------------------------------------------------------------------------------
  lines = 0
  with open('../maps/13semantics/'+map_name+'/humandensity-'+map_name+'-new.csv') as f:
    lines = f.readlines()

  hd = len(lines)
  wd = len(lines[0].split(','))

  # Converts data to a list of integers
  data = []
  for line in lines:
    data.extend([float(c) for c in line.split(',')])

  data = np.reshape(data,[hd,wd])
  data = skimage.measure.block_reduce(data, (red,red), np.max)

  # print(data.shape)
  hd, wd = data.shape
  
  data_show = data
  data_show = cv2.filter2D(data_show,-1,kernel)
  data_show = cv2.filter2D(data_show,-1,kernel)
  data = data_show/np.sum(data_show)
  data_show = data_show/np.max(data_show)

  # -----------------------------------------------------------------------------------

  png_path = '../maps/13semantics/'+map_name+'/'+map_name+'_colors.png'
  labelmap_path = '../maps/13semantics/labelmap.txt'

  # Read the labelmap file
  with open(labelmap_path, 'r') as f:
      labelmap = f.readlines()
  labelmap.pop(0)
  labelmap.pop(0)

  # Load the PNG image
  image = cv2.imread(png_path)
  image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

  image = cv2.resize(image, (wd,hd), interpolation = cv2.INTER_LINEAR)
  map = np.zeros((hd,wd,chans))

  # fig = plt.figure(figsize=(5,5))
  # plt.imshow(image)
  # plt.axis('off')
  # plt.show()

  colors = []
  # Iterate over each label in the labelmap
  for i, label in enumerate(labelmap):
      label = label.strip().split(':')
      label_name = label[0]
      label_color = np.array(label[1].split(','), dtype=int)
      colors.append(label_color)
      # Create a mask for the pixels with the label color
      map[:,:,i] = 255-cv2.inRange(image, label_color-10, label_color+10)

  # check if map_name_shades.png exists and if so, add it to the map
  if os.path.isfile('/home/placido.falqueto/IRI_Barcelona/maps/13semantics/'+map_name+'/'+map_name+'_shades.png'):
    png_path = '/home/placido.falqueto/IRI_Barcelona/maps/13semantics/'+map_name+'/'+map_name+'_shades.png'
    # Load the PNG image
    image = cv2.imread(png_path)
    image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
    image = cv2.resize(image, (wd,hd), interpolation = cv2.INTER_LINEAR)
    map[:,:,-1] = 255-cv2.inRange(image, label_color-10, label_color+10)

  map = map/255

  # print(map.shape)
  h, w, _ = map.shape

  sem_map = np.zeros((h,w,3))
  for i in range(len(sem_dict)):
    sem = np.full((h,w,3),colors[i])
    sem_map = np.stack((1-map[:,:,i],1-map[:,:,i],1-map[:,:,i]), axis=2)*sem+sem_map

  fig = plt.figure(figsize=(5,5))
  plt.imshow(sem_map/255)
  plt.axis('off')
  plt.show()

  fig = plt.figure(figsize=(5,5))
  plt.imshow(data_show)
  plt.axis('off')
  plt.show()

  # -----------------------------------------------------------------------------------
  # Random sample 32x32 windows in map
  inserted = 0
  crops = np.zeros((n_crops,2),dtype=int)
  selections = np.zeros((h,w))
  for i in range(n_crops):
    background = np.zeros((h,w))
    flag = True
    while flag:
      aux_x = int(random.random()*(w-div+1))
      aux_y = int(random.random()*(h-div+1))
      flag = False
      # print(f'INSERTED: {inserted}  ->  x: {aux_x} and y: {aux_y}')
      # for z in range(inserted):
      #   if abs(aux_x-crops[z,0])<int(div/10) and abs(aux_y-crops[z,1])<int(div/10):
      #     # print('too close')
      #     flag = True
    crops[i,0] = aux_x
    crops[i,1] = aux_y
    selections = selections+cv2.rectangle(background,(crops[i,0],crops[i,1]),(crops[i,0]+div-1,crops[i,1]+div-1),(1,0,0),-1)
    inserted = inserted + 1
  selections = 1/selections

  # -----------------------------------------------------------------------------------
  # creating subplot and figure
  # ax = plt.subplot(111)
  data_pred = np.zeros((int(math.ceil(h)),int(math.ceil(w))))
  kls = []
  for i in range(n_crops):
    submap = map[crops[i,1]:crops[i,1]+div, crops[i,0]:crops[i,0]+div,:]
    data_aux = data[crops[i,1]:crops[i,1]+div, crops[i,0]:crops[i,0]+div]
    submap = torch.tensor(np.expand_dims(submap,axis=0), dtype=torch.float32).to(device)
    data_aux = torch.tensor(np.expand_dims(data_aux,axis=0), dtype=torch.float32).to(device)
    _, subdata, _ = model(submap, mask_ratio=mask_ratio)
    subdata = subdata.detach().cpu() #torch.einsum('nchw->nhwc', subdata).detach().cpu()
    subdata = subdata.squeeze(dim=0).squeeze(dim=2).numpy()
    data_pred[crops[i,1]:crops[i,1]+div, crops[i,0]:crops[i,0]+div] += subdata*selections[crops[i,1]:crops[i,1]+div, crops[i,0]:crops[i,0]+div]
    # Calculate the KL-divergence
    
  data = torch.Tensor(data)
  data_pred = torch.Tensor(data_pred)
  data = data/data.sum()
  data_pred = data_pred/data_pred.sum()
  data_pred[data_pred == 0] = 1e-12
  data_pred[data_pred == 1] = 1-1e-12
  data[data == 0] = 1e-12
  data[data == 1] = 1-1e-12

  kl = torch.nn.functional.kl_div(data_pred.unsqueeze(0).log(), data.unsqueeze(0), reduction='batchmean').item()
  kli = torch.nn.functional.kl_div(data.unsqueeze(0).log(), data_pred.unsqueeze(0), reduction='batchmean').item()
  h, w = data.shape
  data_aux = (data / data.max() * 255).detach().cpu().numpy().astype(int)
  pred_aux = (data_pred / data_pred.max() * 255).detach().cpu().numpy().astype(int)
  hist_a = [0.0] * 256
  for i in range(h):
    for j in range(w):
      hist_a[data_aux[i, j]] += 1
  hist_b = [0.0] * 256
  for i in range(h):
    for j in range(w):
      hist_b[pred_aux[i, j]] += 1
  was = wasserstein_distance(hist_a, hist_b)
  mse = ((data - data_pred)**2).mean()

  data = data/data.max()
  data_pred = data_pred/data_pred.max()
  plt.figure(figsize=(4,4))
  plt.imshow(np.multiply(np.stack((1-data,1-data,np.full(data.shape,1)),axis=2), np.stack((np.full(data_pred.shape,1),1-data_pred,1-data_pred),axis=2)))
  plt.axis('off')
  plt.show()
  
  data_pred = data_pred/np.max(data_pred.detach().cpu().numpy())
  plt.figure(figsize=(5,5))
  plt.imshow(data_pred)
  # plt.imshow(np.multiply(np.stack((map[:,:,0],map[:,:,0],map[:,:,0]),axis=2), np.stack((np.full(data_pred.shape,1),1-data_pred,1-data_pred),axis=2)), vmin=0, vmax=1)
  plt.axis('off')
  plt.show()

  print(f'KL-divergence: {kl}')
  print(f'Reverse KL-divergence: {kli}')
  print(f'EMD: {was:.2f}')
  print(f'MSE: {mse:.2e}')
  kl1 = np.append(kl1,kl)
  kli1 = np.append(kli1,kli)
  was1 = np.append(was1,was)
  mse1 = np.append(mse1,mse)
  # import sys
  # sys.exit(0)

print('-----------------------------')
print(f'Mean KL-divergence: {np.mean(kl1)}')
print(f'Std KL-divergence: {np.std(kl1)}')
print(f'Mean reverse KL-divergence: {np.mean(kli1)}')
print(f'Std reverse KL-divergence: {np.std(kli1)}')
print(f'Mean EMD: {np.mean(was1):.2f}')
print(f'Std EMD: {np.std(was1):.2f}')

# plot KL-div
plt.figure(figsize=(10,5))
plt.plot(kl1, label='KL-divergence')
plt.legend()
plt.show()

# plot all metrics normalized
plt.figure(figsize=(10,5))
plt.plot(kl1 / np.max(kl1), label='KL-divergence')
plt.plot(kli1 / np.max(kli1), label='Reverse KL-divergence')
plt.plot(was1 / np.max(was1), label='EMD')
plt.plot(mse1 / np.max(mse1), label='MSE')
plt.legend()
plt.show()
['13labels_testMAE2-checkpoint-52-stanford_gates2.pth', '13labels_testMAE2-checkpoint-51-stanford_coupa0.pth', '13labels_testMAE2-checkpoint-56-stanford_little3.pth', '13labels_testMAE2-checkpoint-40-stanford_bookstore4.pth', '13labels_testMAE2-checkpoint-56-stanford_coupa2.pth', '13labels_testMAE2-checkpoint-21-stanford_hyang10.pth', '13labels_testMAE2-checkpoint-59-stanford_hyang2.pth', '13labels_testMAE2-checkpoint-71-stanford_bookstore0.pth', '13labels_testMAE2-checkpoint-58-stanford_coupa1.pth', '13labels_testMAE2-checkpoint-58-stanford_coupa3.pth', '13labels_testMAE2-checkpoint-33-stanford_gates1.pth', '13labels_testMAE2-checkpoint-61-stanford_gates3.pth', '13labels_testMAE2-checkpoint-46-stanford_deathCircle0.pth']
stanford_gates2
Resume checkpoint /data/placido/13labels_testMAE2-checkpoint-52-stanford_gates2.pth
With optim & sched!
Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
KL-divergence: 0.8419504165649414
Reverse KL-divergence: 6.667407512664795
EMD: 107.67
MSE: 5.05e-09
stanford_coupa0
Resume checkpoint /data/placido/13labels_testMAE2-checkpoint-51-stanford_coupa0.pth
Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).
With optim & sched!
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
KL-divergence: 0.1692814975976944
Reverse KL-divergence: 0.7065452933311462
EMD: 19.52
MSE: 1.79e-09
stanford_little3
Resume checkpoint /data/placido/13labels_testMAE2-checkpoint-56-stanford_little3.pth
Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).
With optim & sched!
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
KL-divergence: 0.34849080443382263
Reverse KL-divergence: 1.8394603729248047
EMD: 133.34
MSE: 2.00e-10
stanford_bookstore4
Resume checkpoint /data/placido/13labels_testMAE2-checkpoint-40-stanford_bookstore4.pth
With optim & sched!
libpng warning: iCCP: known incorrect sRGB profile
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
KL-divergence: 0.6350451707839966
Reverse KL-divergence: 3.5849456787109375
EMD: 19.41
MSE: 1.93e-08
stanford_coupa2
Resume checkpoint /data/placido/13labels_testMAE2-checkpoint-56-stanford_coupa2.pth
Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).
With optim & sched!
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
KL-divergence: 0.10235846042633057
Reverse KL-divergence: 0.412220299243927
EMD: 18.70
MSE: 1.10e-09
stanford_hyang10
Resume checkpoint /data/placido/13labels_testMAE2-checkpoint-21-stanford_hyang10.pth
Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).
With optim & sched!
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
KL-divergence: 0.6762868762016296
Reverse KL-divergence: 4.561557292938232
EMD: 112.83
MSE: 2.04e-09
stanford_hyang2
Resume checkpoint /data/placido/13labels_testMAE2-checkpoint-59-stanford_hyang2.pth
Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).
With optim & sched!
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
KL-divergence: 0.2063579261302948
Reverse KL-divergence: 1.3328815698623657
EMD: 59.00
MSE: 5.53e-10
stanford_bookstore0
Resume checkpoint /data/placido/13labels_testMAE2-checkpoint-71-stanford_bookstore0.pth
With optim & sched!
libpng warning: iCCP: known incorrect sRGB profile
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
KL-divergence: 0.0983680710196495
Reverse KL-divergence: 0.277249813079834
EMD: 15.23
MSE: 7.63e-10
stanford_coupa1
Resume checkpoint /data/placido/13labels_testMAE2-checkpoint-58-stanford_coupa1.pth
Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).
With optim & sched!
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
KL-divergence: 0.3859335780143738
Reverse KL-divergence: 2.274838924407959
EMD: 21.57
MSE: 5.22e-09
stanford_coupa3
Resume checkpoint /data/placido/13labels_testMAE2-checkpoint-58-stanford_coupa3.pth
Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).
With optim & sched!
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
KL-divergence: 0.08326657116413116
Reverse KL-divergence: 0.3712945282459259
EMD: 15.40
MSE: 1.64e-09
stanford_gates1
Resume checkpoint /data/placido/13labels_testMAE2-checkpoint-33-stanford_gates1.pth
Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).
With optim & sched!
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
KL-divergence: 0.46858248114585876
Reverse KL-divergence: 3.0416054725646973
EMD: 84.88
MSE: 2.56e-09
stanford_gates3
Resume checkpoint /data/placido/13labels_testMAE2-checkpoint-61-stanford_gates3.pth
Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).
With optim & sched!
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
KL-divergence: 0.13589778542518616
Reverse KL-divergence: 0.6332889795303345
EMD: 31.03
MSE: 8.76e-10
stanford_deathCircle0
Resume checkpoint /data/placido/13labels_testMAE2-checkpoint-46-stanford_deathCircle0.pth
Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).
With optim & sched!
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
KL-divergence: 0.37928178906440735
Reverse KL-divergence: 2.8631434440612793
EMD: 216.40
MSE: 2.15e-10
-----------------------------
Mean KL-divergence: 0.3485462636901782
Std KL-divergence: 0.23872062914592435
Mean reverse KL-divergence: 2.1974183985820184
Std reverse KL-divergence: 1.848294272006047
Mean EMD: 65.77
Std EMD: 59.74
No description has been provided for this image
No description has been provided for this image